/*
 * 版权所有(C)，上海海鼎信息工程股份有限公司，lizhixing，所有权利保留。
 * <p>
 * 项目名：	rabbit-demo
 * 文件名：	MsgSender
 * 模块说明：
 * 修改历史：
 * 2022/7/24 - lizhixing - 创建。
 */
package com.lovely602.rabbit.sender;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.concurrent.TimeoutException;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

/**
 * @author lizhixing
 */
public class MsgSender {

  public static void main(String[] args) {
    // 初始化连接工厂
    ConnectionFactory connectionFactory = new ConnectionFactory();
    // 设置连接工厂指向的目的地
    connectionFactory.setHost("localhost");
    Connection connection = null;
    Channel channel = null;
    try {
      // 通过工厂创建消息连接
      connection = connectionFactory.newConnection();
      // 通过消息创建通信通道
      channel = connection.createChannel();
      String queueName = "myQueue";
      // 通过通道创建一个队列
      channel.queueDeclare(queueName, false, false, false, null);
      // 定义消息
      String message = "this is my first msg By rabbitmq";
      // 发送消息
      channel.basicPublish("", queueName, null, message.getBytes(StandardCharsets.UTF_8));
    } catch (IOException e) {
      e.printStackTrace();
    } catch (TimeoutException e) {
      e.printStackTrace();
    } finally {
      // 关闭通道
      try {
        // 关闭通道
        if (channel != null) {
          channel.close();
        }
        // 关闭连接
        if (connection != null) {
          connection.close();
        }
      } catch (IOException e) {
        e.printStackTrace();
      } catch (TimeoutException e) {
        e.printStackTrace();
      }
    }

  }

}
